type TT = 'a' | 'b' | 'c'
type UU = 'a' | 'b'

// 从 T 中提取 U 中的类型
type EE = Extract<TT, UU>
// 等价于：
// type EE = 'a' | 'b'

const ee: EE = 'a'

// 原理
type MadeExtract<T, U> = T extends U ? T : never
